﻿using System;
using System.Collections.Generic;
using System.Linq;
using Controller2.BLL;

namespace Controller2.Models.ViewModels
{
    public class BrainstormViewModel
    {
        public int ID { get; set; }
        public string Topico { get; set; }
        public string DataCadastro { get; set; }
        public string Campanha { get; set; }
        public string UserName { get; set; }

        public IEnumerable<BrainstormViewModel> Listar(ControllerBDModelContainer db, string texto, int filtro, int idPessoa)
        {
            IEnumerable<BrainstormViewModel> brain;
            int codigo = 0;
            if (filtro == 1)
            {
                if (!Int32.TryParse(texto, out codigo))
                {
                    filtro = 0;
                    texto = "";
                }
            }
            if (string.IsNullOrWhiteSpace(texto) || texto.Equals("Digite sua pesquisa"))
            {
                filtro = 0;
                texto = "";
            }
            switch (filtro)
            {
                default:
                    if (idPessoa > 0)
                    {
                        brain = from c in BrainstormBll.GetAllBrainstorm_Topicos(db)
                                where c.Campanha.IdCliente == idPessoa
                                orderby c.IdTopico
                                select new BrainstormViewModel
                                {
                                    ID = c.IdTopico,
                                    Topico = c.Topico,
                                    DataCadastro = c.DataCadastro.ToShortDateString(),
                                    Campanha = c.Campanha.Nome,
                                    UserName = c.UserName
                                };
                    }
                    else
                    {
                        brain = from c in BrainstormBll.GetAllBrainstorm_Topicos(db)
                                orderby c.IdTopico
                                select new BrainstormViewModel
                                {
                                    ID = c.IdTopico,
                                    Topico = c.Topico,
                                    DataCadastro = c.DataCadastro.ToShortDateString(),
                                    Campanha = c.Campanha.Nome,
                                    UserName = c.UserName
                                };
                    }
                    break;
                case 1:
                    if (idPessoa > 0)
                    {
                        brain = from c in BrainstormBll.GetAllBrainstorm_Topicos(db)
                                where c.Campanha.IdCliente == idPessoa && c.IdTopico == codigo
                                orderby c.IdTopico
                                select new BrainstormViewModel
                                {
                                    ID = c.IdTopico,
                                    Topico = c.Topico,
                                    DataCadastro = c.DataCadastro.ToShortDateString(),
                                    Campanha = c.Campanha.Nome,
                                    UserName = c.Campanha.Cliente.UserName
                                };
                    }
                    else
                    {
                        brain = from c in BrainstormBll.GetAllBrainstorm_Topicos(db)
                                where c.IdTopico == codigo
                                orderby c.IdTopico
                                select new BrainstormViewModel
                                {
                                    ID = c.IdTopico,
                                    Topico = c.Topico,
                                    DataCadastro = c.DataCadastro.ToShortDateString(),
                                    Campanha = c.Campanha.Nome,
                                    UserName = c.Campanha.Cliente.UserName
                                };
                    }
                    break;
            }

			return brain.OrderBy(o => o.ID);
        }
    }
}